package shared

import scala.collection.SeqMap

/**
 * Created by Administrator on 2020/1/17
 */
object VarTool extends shared.implicits.Implicits {

  val singleMissionStr = "single"
  val compareMissionStr = "compare"
  val batchMissionStr = "batch"
  val indexStr = "index号"
  val commentStr = "备注"
  val sampleIntroStr = "项目"
  val idStr = "样品编号"
  val sexStr = "性别"
  val kindStr = "类型"
  val missionSourceStr = "分析名称"
  val posStr = "阳性"
  val posStrs = List("阳性", "阳性样本", "标准样本", "标准")
  val negStr = "阴性"
  val negStrs = List("阴性", "阴性样本", "空白样本", "空白")
  val normalStrs = List("普通样本", "普通", "")
  val kindStrs = posStrs ::: negStrs ::: normalStrs
  val emptyStr = "普通样本"
  val genotypeStr = "genotype"
  val qcStr = "qc"

  val kitNames = List("SETA", "YARN", "SETB")

  val genderMap = Map("male" -> "男", "female" -> "女")
  val kindMap = Map("阳性" -> posStrs, "阴性" -> negStrs, "普通" -> normalStrs)
  val autoSiteNames = List("Amelogenin", "SRY", "Y-indel", "CSF1PO", "D10S1248", "D10S1435", "D12S391", "D13S317", "D16S539", "D17S1301", "D18S51", "D19S433", "D1S1656", "D20S482", "D21S11", "D22S1045", "D2S1338", "D2S441", "D3S1358", "D4S2408", "D5S818", "D6S1043", "D7S820", "D8S1179", "D9S1122", "FGA", "Penta-D", "Penta-E", "TH01", "TPOX", "vWA", "D11S2368", "D11S4463", "D12ATA63", "D13S325", "D14S1434", "D15S659", "D17S1290", "D18S535", "D19S253", "D1GATA113", "D1S1677", "D20S470", "D22GATA198B05", "D3S3045", "D3S4529", "D4S2366", "D5S2500", "D6S1017", "D6S474", "D6S477", "D7S1517", "D7S3048", "D8S1132", "D9S925")
  val setAAutoSiteNames = List("Amelogenin", "SRY", "Y-indel", "CSF1PO", "D10S1248", "D10S1435", "D12S391", "D13S317", "D16S539", "D17S1301", "D18S51", "D19S433", "D1S1656", "D20S482", "D21S11", "D22S1045", "D2S1338", "D2S441", "D3S1358", "D4S2408", "D5S818", "D6S1043", "D7S820", "D8S1179", "D9S1122", "FGA", "Penta-D", "Penta-E", "TH01", "TPOX", "vWA")
  val setBAutoSiteNames = List("CSF1PO", "D10S1248", "D10S1435", "D11S2368", "D11S4463", "D12ATA63", "D12S391", "D13S317", "D13S325", "D14S1434", "D15S659", "D16S539", "D17S1290", "D17S1301", "D18S51", "D18S535", "D19S253", "D19S433", "D1GATA113", "D1S1656", "D1S1677", "D20S470", "D20S482", "D21S11", "D22GATA198B05", "D22S1045", "D2S1338", "D2S441", "D3S1358", "D3S3045", "D3S4529", "D4S2366", "D4S2408", "D5S2500", "D5S818", "D6S1017", "D6S1043", "D6S474", "D6S477", "D7S1517", "D7S3048", "D7S820", "D8S1132", "D8S1179", "D9S1122", "D9S925", "FGA", "Penta-D", "Penta-E", "TH01", "TPOX", "vWA", "Y-indel")
  val ySiteNames = List("DYF387S1a/b", "DYF404S1a/b", "DYS19", "DYS385a/b", "DYS388", "DYS389I", "DYS389II", "DYS390", "DYS391", "DYS392", "DYS393", "DYS437", "DYS438", "DYS439", "DYS444", "DYS447", "DYS448", "DYS449", "DYS456", "DYS458", "DYS460", "DYS481", "DYS505", "DYS508", "DYS518", "DYS522", "DYS527a/b", "DYS533", "DYS549", "DYS557", "DYS570", "DYS576", "DYS596", "DYS612", "DYS626", "DYS627", "DYS635", "DYS643", "DYS645", "DYS722", "Y-GATA-H4", "DYS434", "DYS435", "DYS443", "DYS450", "DYS453", "DYS454", "DYS455", "DYS472", "DYS476", "DYS485", "DYS502", "DYS510", "DYS511", "DYS512", "DYS513", "DYS530", "DYS531", "DYS538", "DYS541", "DYS552", "DYS556", "DYS565", "DYS568", "DYS571", "DYS572", "DYS573", "DYS578", "DYS585", "DYS587", "DYS590", "DYS593", "DYS613", "DYS616", "DYS617", "DYS622", "DYS630", "DYS638", "DYS640", "DYS641", "Y-GATA-A10", "DYS446")
  val setAYSiteNames = List("DYF387S1a/b", "DYF404S1a/b", "DYS19", "DYS385a/b", "DYS388", "DYS389I", "DYS389II", "DYS390", "DYS391", "DYS392", "DYS393", "DYS437", "DYS438", "DYS439", "DYS444", "DYS447", "DYS448", "DYS449", "DYS456", "DYS458", "DYS460", "DYS481", "DYS505", "DYS508", "DYS518", "DYS522", "DYS527a/b", "DYS533", "DYS549", "DYS557", "DYS570", "DYS576", "DYS596", "DYS612", "DYS626", "DYS627", "DYS635", "DYS643", "DYS645", "DYS722", "Y-GATA-H4")
  val setBYSiteNames = List("DYF387S1a/b", "DYF404S1a/b", "DYS19", "DYS385a/b", "DYS388", "DYS389I", "DYS389II", "DYS390", "DYS391", "DYS392", "DYS393", "DYS434", "DYS435", "DYS437", "DYS438", "DYS439", "DYS443", "DYS444", "DYS447", "DYS448", "DYS449", "DYS450", "DYS453", "DYS454", "DYS455", "DYS456", "DYS458", "DYS460", "DYS472", "DYS476", "DYS481", "DYS485", "DYS502", "DYS505", "DYS508", "DYS510", "DYS511", "DYS512", "DYS513", "DYS518", "DYS522", "DYS527a/b", "DYS530", "DYS531", "DYS533", "DYS538", "DYS541", "DYS549", "DYS552", "DYS556", "DYS557", "DYS565", "DYS568", "DYS570", "DYS571", "DYS572", "DYS573", "DYS576", "DYS578", "DYS585", "DYS587", "DYS590", "DYS593", "DYS596", "DYS612", "DYS613", "DYS616", "DYS617", "DYS622", "DYS626", "DYS627", "DYS630", "DYS635", "DYS638", "DYS640", "DYS641", "DYS643", "DYS645", "DYS722", "Y-GATA-A10", "Y-GATA-H4")
  val yarnYSiteNames = List("DYF387S1a/b", "DYF404S1a/b", "DYS19", "DYS385a/b", "DYS388", "DYS389I", "DYS389II", "DYS390", "DYS391", "DYS392", "DYS393", "DYS437", "DYS438", "DYS439", "DYS444", "DYS447", "DYS448", "DYS449", "DYS456", "DYS458", "DYS460", "DYS481", "DYS505", "DYS508", "DYS518", "DYS522", "DYS527a/b", "DYS533", "DYS549", "DYS557", "DYS570", "DYS576", "DYS593", "DYS596", "DYS612", "DYS626", "DYS627", "DYS635", "DYS643", "DYS645", "DYS722", "Y-GATA-H4", "DYS443", "DYS446")
  val xSiteNames = List("DXS10074", "DXS10075", "DXS10079", "DXS101", "DXS10101", "DXS10103", "DXS10148", "DXS10159", "DXS10162", "DXS10164", "DXS6789", "DXS6809", "DXS7132", "DXS7133", "DXS7423", "DXS7424", "DXS8378", "DXS981", "DXS9902", "GATA165B12", "GATA31E08")
  val iSnpSiteNames = List("rs1000551", "rs10100663", "rs1024676", "rs10474433", "rs10490978", "rs10501269", "rs1054975", "rs10765879", "rs1104570", "rs11174191", "rs11714258", "rs11722834", "rs11745646", "rs11779762", "rs11927356", "rs12042109", "rs1206523", "rs1217612", "rs12362773", "rs12386695", "rs12605006", "rs12640116", "rs12924985", "rs13028059", "rs13031497", "rs13113625", "rs13255815", "rs13554", "rs1381964", "rs1502770", "rs17062044", "rs17137114", "rs1863370", "rs1898230", "rs2122080", "rs2157752", "rs2164537", "rs2188471", "rs2235254", "rs2285914", "rs238925", "rs2453236", "rs2715107", "rs2826949", "rs2837768", "rs2926143", "rs3801786", "rs4075260", "rs4235308", "rs4449484", "rs4512160", "rs451826", "rs4709032", "rs4801083", "rs4811868", "rs4813947", "rs4868851", "rs4878020", "rs4971514", "rs507226", "rs6106298", "rs6421248", "rs6424243", "rs6432423", "rs6482647", "rs6536667", "rs6565924", "rs6671669", "rs6678302", "rs689338", "rs6933870", "rs700702", "rs7137797", "rs7159423", "rs7160304", "rs716620", "rs7297643", "rs7329072", "rs7441242", "rs7596380", "rs7703985", "rs7710068", "rs774763", "rs7767965", "rs7814747", "rs7857478", "rs790085", "rs7945310", "rs7979370", "rs8125857", "rs905457", "rs909981", "rs910792", "rs918331", "rs926533", "rs9320609", "rs9352768", "rs944662", "rs9598152", "rs9613776")
  val ySnpSiteNames = List("M176", "F708", "F4535/Z19137", "F1007", "CTS66", "F8465", "P305", "B482", "M130", "F723", "F725", "M407", "F8", "Y26395", "M324", "P201", "F13", "F26868", "F700", "PH90", "M346", "M343", "A9461", "F3737", "C6651181T", "F810", "F813/M6539", "F819", "Z35160", "CTS426", "CTS439", "B433", "F5477", "F827", "F830", "FGC39579", "V20", "L940", "V4", "Z26015", "F46/Y15", "F4065", "AF6", "F48", "F856", "CTS623", "AM01856/F871", "G6942166A", "Z20492", "Z43879", "F55", "SK1507", "F903", "F906", "F6193", "F915", "F60", "M522", "Y7582", "C7383403T", "CTS1451", "F964", "F977", "IMS-JST002611", "F993", "F996", "F85", "Z34163", "F1022", "M1932", "F16077", "F4084", "PF5008", "Z35310", "F16227", "B456", "F100", "Y26383", "F1070", "FGC10851", "F16381", "F1095", "F1096", "B80", "F5489", "L56", "F1123", "Z35348", "SK1927", "F1127", "F4759", "SK1772", "F134", "M5415", "F1212", "F138", "F5504", "F141", "F1232", "F1236", "SK1676", "F1252", "F1262", "F1266", "Z780", "F14326", "F1273", "F1276", "F4774", "F1290", "F153", "F1313", "F5506", "F27531", "FGC7535", "Z25907", "F1365", "F1369", "F1388", "F1389", "F1391", "M405", "F27587", "FGC10863", "F1536", "B170", "F4156", "Z25942", "F6592", "P164", "F238", "F14422/Z25930", "F1699", "P177", "PH975", "P143", "CTS2190", "F1736", "F1756", "CTS2457", "F1759", "CTS2562", "F1803", "Z6046", "CTS3068", "CTS3085", "F1827", "M333", "M170", "N5", "F270", "F1852", "L215", "M184", "M46", "F1863", "M188", "Z2359", "M253", "M173", "M201", "M198", "F1918", "F1942", "P191", "M217", "M214", "FGC12511", "M207", "CTS4367", "CTS4960", "F310", "M1368", "F317", "F325", "F4199", "SK1675", "CTS5488", "F2137", "F2172", "M438", "F5484", "F2356", "F5524/SK1746", "CTS6904", "M353", "F400", "F2489", "F2491", "F2527", "F4370", "F3967", "SK1922", "FGC1846/Y2136", "F2569", "F2576", "F2584", "L330", "M2936", "F438", "F444", "F446", "F449", "F2685", "SK1926", "CTS8624", "P180", "F12502", "F22912", "F2859", "SK1533", "F2883", "SK1802", "F2924", "P124", "F2930", "M3", "F2941", "F2944", "L275", "F4284", "CTS9996", "Z25928", "Y7080", "F3067", "CTS10535", "CTS10573", "Z94", "F560", "Z4056", "SK2163", "F3163", "F3172", "Z1936", "F24357", "L53", "M145", "M101", "L595", "M33", "F3247", "M48", "M159", "M124", "M25", "M73", "M75", "M110", "M120", "Z283", "P287", "SK1760", "Y21447", "PH5117", "M1470", "SK1764", "CTS10738/M1707", "Y23787", "M285", "CTS11043")

  val setASiteNames = VarTool.autoSiteNames ::: VarTool.setAYSiteNames ::: VarTool.xSiteNames ::: VarTool.iSnpSiteNames
  val yarnSiteNames = VarTool.yarnYSiteNames ::: VarTool.ySnpSiteNames
  val setBSiteNames = VarTool.setBAutoSiteNames ::: VarTool.setBYSiteNames

  val snpSiteNames = List("M176", "F708", "F4535/Z19137", "F1007", "CTS66", "F8465", "P305", "B482", "M130", "F723", "F725", "M407", "F8", "Y26395", "M324", "P201", "F13", "F26868", "F700", "PH90", "M346", "M343", "A9461", "F3737", "C6651181T", "F810", "F813/M6539", "F819", "Z35160", "CTS426", "CTS439", "B433", "F5477", "F827", "F830", "FGC39579", "V20", "L940", "V4", "Z26015", "F46/Y15", "F4065", "AF6", "F48", "F856", "CTS623", "AM01856/F871", "G6942166A", "Z20492", "Z43879", "F55", "SK1507", "F903", "F906", "F6193", "F915", "F60", "M522", "Y7582", "C7383403T", "CTS1451", "F964", "F977", "IMS-JST002611", "F993", "F996", "F85", "Z34163", "F1022", "M1932", "F16077", "F4084", "PF5008", "Z35310", "F16227", "B456", "F100", "Y26383", "F1070", "FGC10851", "F16381", "F1095", "F1096", "B80", "F5489", "L56", "F1123", "Z35348", "SK1927", "F1127", "F4759", "SK1772", "F134", "M5415", "F1212", "F138", "F5504", "F141", "F1232", "F1236", "SK1676", "F1252", "F1262", "F1266", "Z780", "F14326", "F1273", "F1276", "F4774", "F1290", "F153", "F1313", "F5506", "F27531", "FGC7535", "Z25907", "F1365", "F1369", "F1388", "F1389", "F1391", "M405", "F27587", "FGC10863", "F1536", "B170", "F4156", "Z25942", "F6592", "P164", "F238", "F14422/Z25930", "F1699", "P177", "PH975", "P143", "CTS2190", "F1736", "F1756", "CTS2457", "F1759", "CTS2562", "F1803", "Z6046", "CTS3068", "CTS3085", "F1827", "M333", "M170", "N5", "F270", "F1852", "L215", "M184", "M46", "F1863", "M188", "Z2359", "M253", "M173", "M201", "M198", "F1918", "F1942", "P191", "M217", "M214", "FGC12511", "M207", "CTS4367", "CTS4960", "F310", "M1368", "F317", "F325", "F4199", "SK1675", "CTS5488", "F2137", "F2172", "M438", "F5484", "F2356", "F5524/SK1746", "CTS6904", "M353", "F400", "F2489", "F2491", "F2527", "F4370", "F3967", "SK1922", "FGC1846/Y2136", "F2569", "F2576", "F2584", "L330", "M2936", "F438", "F444", "F446", "F449", "F2685", "SK1926", "CTS8624", "P180", "F12502", "F22912", "F2859", "SK1533", "F2883", "SK1802", "F2924", "P124", "F2930", "M3", "F2941", "F2944", "L275", "F4284", "CTS9996", "Z25928", "Y7080", "F3067", "CTS10535", "CTS10573", "Z94", "F560", "Z4056", "SK2163", "F3163", "F3172", "Z1936", "F24357", "L53", "M145", "M101", "L595", "M33", "F3247", "M48", "M159", "M124", "M25", "M73", "M75", "M110", "M120", "Z283", "P287", "SK1760", "Y21447", "PH5117", "M1470", "SK1764", "CTS10738/M1707", "Y23787", "M285", "CTS11043", "rs1000551", "rs10100663", "rs1024676", "rs10474433", "rs10490978", "rs10501269", "rs1054975", "rs10765879", "rs1104570", "rs11174191", "rs11714258", "rs11722834", "rs11745646", "rs11779762", "rs11927356", "rs12042109", "rs1206523", "rs1217612", "rs12362773", "rs12386695", "rs12605006", "rs12640116", "rs12924985", "rs13028059", "rs13031497", "rs13113625", "rs13255815", "rs13554", "rs1381964", "rs1502770", "rs17062044", "rs17137114", "rs1863370", "rs1898230", "rs2122080", "rs2157752", "rs2164537", "rs2188471", "rs2235254", "rs2285914", "rs238925", "rs2453236", "rs2715107", "rs2826949", "rs2837768", "rs2926143", "rs3801786", "rs4075260", "rs4235308", "rs4449484", "rs4512160", "rs451826", "rs4709032", "rs4801083", "rs4811868", "rs4813947", "rs4868851", "rs4878020", "rs4971514", "rs507226", "rs6106298", "rs6421248", "rs6424243", "rs6432423", "rs6482647", "rs6536667", "rs6565924", "rs6671669", "rs6678302", "rs689338", "rs6933870", "rs700702", "rs7137797", "rs7159423", "rs7160304", "rs716620", "rs7297643", "rs7329072", "rs7441242", "rs7596380", "rs7703985", "rs7710068", "rs774763", "rs7767965", "rs7814747", "rs7857478", "rs790085", "rs7945310", "rs7979370", "rs8125857", "rs905457", "rs909981", "rs910792", "rs918331", "rs926533", "rs9320609", "rs9352768", "rs944662", "rs9598152", "rs9613776")
  val allSiteNames = autoSiteNames ::: ySiteNames ::: xSiteNames ::: snpSiteNames
  val basicColumnNames = List("containerName", "sampleIntro", "updateMission", "indexId", "gender", "kind", "panel",
    "comment", "updateTime") ::: List("singleSource", "interlocusBalance", "autosomalLociTyped", "yLociTyped",
    "xLociTyped", "isnpLociTyped")
  val siteNamesMap = SeqMap(
    "SETA" -> setASiteNames,
    "YARN" -> yarnSiteNames,
    "SETB" -> setBSiteNames,
    "PowerPlex 21" -> List("Amelogenin", "D3S1358", "D1S1656", "D6S1043", "D13S317", "Penta-E", "D16S539", "D18S51", "D2S1338", "CSF1PO", "Penta-D", "TH01", "vWA", "D21S11", "D7S820", "D5S818", "TPOX", "D8S1179", "D12S391", "D19S433", "FGA"),
    "VersaPlex 27PY" -> List("Amelogenin", "D3S1358", "D1S1656", "D2S441", "D10S1248", "D13S317", "Penta-E", "D16S539", "D18S51", "D2S1338", "CSF1PO", "Penta-D", "TH01", "vWA", "D21S11", "D7S820", "D5S818", "TPOX", "D8S1179", "D12S391", "D19S433", "D6S1043", "D22S1045", "DYS391", "FGA", "DYS576", "DYS570"),
    "GenoY41" -> List("DYS627", "DYS576", "DYS439", "DYS549", "DYS570", "DYS385a/b", "DYS527a/b", "DYS593", "DYS596", "DYS437", "DYS456", "rs199815934", "DYF387S1a/b", "DYS449", "DYS444", "DYS557", "DYS481", "DYS390", "DYS645", "DYS19", "DYS448", "rs759551978", "DYS522", "DYS438", "DYS391", "rs771783753", "DYS460", "Y-GATA-H4", "DYS447", "DYS518", "DYS393", "DYS458", "DYS643", "DYS533", "DYS389I", "DYS635", "DYS389II", "DYS392"),
    "华夏白金" -> List("D3S1358", "vWA", "D16S539", "CSF1PO", "TPOX", "Y-indel", "Amelogenin", "D8S1179", "D21S11", "D18S51", "Penta-E", "D2S441", "D19S433", "TH01", "FGA", "D22S1045", "D5S818", "D13S317", "D7S820", "D6S1043", "D10S1248", "D1S1656", "D12S391", "D2S1338", "Penta-D"),
    "AB_Y41" -> List("DYS576", "DYS389I", "DYS635", "DYS389II", "DYS627", "DYS549", "DYS645", "rs771783753", "rs759551978", "rs199815934", "DYS460", "DYS458", "DYS19", "Y-GATA-H4", "DYS448", "DYS391", "DYS557", "DYS593", "DYS522", "DYS456", "DYS390", "DYS438", "DYS392", "DYS518", "DYS444", "DYS596", "DYS570", "DYS437", "DYS385a/b", "DYS449", "DYS643", "DYS393", "DYS439", "DYS481", "DYF387S1a/b", "DYS533", "DYS447", "DYS527a/b"),
    "MR36A" -> List("TH01", "D5S818", "D21S11", "D18S51", "D6S1043", "D15S659", "D6S477", "Y-indel", "Amelogenin", "D3S1358", "D13S317", "D7S820", "D16S539", "CSF1PO", "Penta-D", "D8S1132", "D7S3048", "D2S441", "vWA", "D8S1179", "TPOX", "Penta-E", "D14S608", "D4S2366", "D3S3045", "D19S433", "D22S1045", "D2S1338", "FGA", "D10S1435", "D5S2500", "D18S535", "DYS391", "D1S1656", "D12S391", "D10S1248", "SE33", "D19S253", "D11S2368"),
    "YSUPP" -> List("DYS531", "DYS630", "DYS622", "DYS510", "DYS533", "DYF404S1a/b", "DYS459", "DYS446", "DYS443",
      "DYS388", "DYS587", "DYS522", "DYS626", "Y-indel", "DYS460", "Y_GATA_A10", "DYS520", "DYS557", "DYS527a/b",
      "DYS481",
      "DYS508", "DYS444", "DYS385a/b", "DYS552", "DYS526a/b", "DYS617", "DYS713")
  )
  val searchKitNames = siteNamesMap.keyList
  val emptySiteNames = List("rs199815934", "rs759551978", "rs771783753")

}
